﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//struct
//{
//	char name[20];
//	int score;
//}peo;
//int main()
//{
//	struct peo s1 = { "xiaoming",100 };
//	return 0;
//}



//
//struct Point
//{
//	int x;
//	int y;
//}p1; //声明类型的同时定义变量p1
//struct Point p2; //定义结构体变量p2
////初始化：定义变量的同时赋初值。
//struct Point p3 = { x, y };
//struct Stu        //类型声明
//{
//	char name[15];//名字
//	int age;      //年龄
//};
//struct Stu s = { "zhangsan", 20 };//初始化
//struct Node
//{
//	int data;
//	struct Point p;
//	struct Node* next;
//}n1 = { 10, {4,5}, NULL }; //结构体嵌套初始化
//struct Node n2 = { 20, {5, 6}, NULL };//结构体嵌套初始化



//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};


//#pragma pcak(8)//修改默认对齐数为8
//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};
//#pragma pack()//取消设置默认对齐数，变成默认值
//
//#pragma pack(1)//设置默认对齐数为1
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//#pragma pack()//取消设置的默认对齐数，还原为默认
//int main()
//{
//	printf("%d\n", sizeof(struct S1));
//	printf("%d\n", sizeof(struct S2));
//	return 0;
//}



//struct S
//{
//	int data[1000];
//	int num;
//};
//struct S s = { {1,2,3,4}, 1000 };
////结构体传参
//void print1(struct S s)
//{
//	printf("%d\n", s.num);
//}
////结构体地址传参
//void print2(struct S* ps)
//{
//	printf("%d\n", ps->num);
//}
//int main()
//{
//	print1(s);//传结构体
//	print2(&s); //传地址
//	return 0;
//}


//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//int main()
//{
//	printf("%d", sizeof(struct A));
//	return 0;
//}


//enum Sex{
//	MALE,
//	FEMAIL,
//	UNKNOW
//};
//enum Day
//{
//	Sun,
//	Mom,
//	Tue,
//	Thr,
//};
////
////int main()
////{
////	enum Day day = Sun;
////	day = 10;
////	printf("%d", day);
////	return 0;
////}
//
//
//enum Color//颜色
//{
//	RED = 1,
//	GREEN = 2,
//	BLUE = 4
//};




//联合类型的声明
union Un
{
	char c;
	int i;
};

int main()
{
	//联合变量的定义
	union Un un;
	//计算连个变量的大小
	printf("%d\n", sizeof(un));
}
